package com.greenhouse.business.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.greenhouse.business.domain.BizDevice;
import com.greenhouse.business.domain.BizProduct;
import com.greenhouse.business.domain.vo.ProductVo;
import com.greenhouse.business.mapper.BizProductMapper;
import com.greenhouse.business.service.IBizDeviceService;
import com.greenhouse.business.service.IBizProductService;
import com.greenhouse.common.utils.DateUtils;

/**
 * 产品管理Service业务层处理
 * 
 * @author greenhouse
 * @date 2021-04-12
 */
@Service
public class BizProductServiceImpl implements IBizProductService {
	@Autowired
	private BizProductMapper bizProductMapper;

	@Autowired
	private IBizDeviceService bizDeviceService;

	/**
	 * 查询产品管理
	 * 
	 * @param productId 产品管理ID
	 * @return 产品管理
	 */
	@Override
	public BizProduct selectBizProductById(Long productId) {
		return bizProductMapper.selectBizProductById(productId);
	}

	/**
	 * 查询产品管理列表
	 * 
	 * @param bizProduct 产品管理
	 * @return 产品管理
	 */
	@Override
	public List<BizProduct> selectBizProductList(BizProduct bizProduct) {
		return bizProductMapper.selectBizProductList(bizProduct);
	}

	/**
	 * 新增产品管理
	 * 
	 * @param bizProduct 产品管理
	 * @return 结果
	 */
	@Override
	public int insertBizProduct(BizProduct bizProduct) {
		bizProduct.setCreateTime(DateUtils.getNowDate());
		return bizProductMapper.insertBizProduct(bizProduct);
	}

	/**
	 * 修改产品管理
	 * 
	 * @param bizProduct 产品管理
	 * @return 结果
	 */
	@Override
	public int updateBizProduct(BizProduct bizProduct) {
		bizProduct.setUpdateTime(DateUtils.getNowDate());
		return bizProductMapper.updateBizProduct(bizProduct);
	}

	/**
	 * 批量删除产品管理
	 * 
	 * @param productIds 需要删除的产品管理ID
	 * @return 结果
	 */
	@Override
	public int deleteBizProductByIds(Long[] productIds) {
		return bizProductMapper.deleteBizProductByIds(productIds);
	}

	/**
	 * 删除产品管理信息
	 * 
	 * @param productId 产品管理ID
	 * @return 结果
	 */
	@Override
	public int deleteBizProductById(Long productId) {
		return bizProductMapper.deleteBizProductById(productId);
	}

	@Override
	public ProductVo selectProductVoById(Long productId) {
		// TODO Auto-generated method stub
		ProductVo vo = bizProductMapper.selectProductVoById(productId);

		BizDevice bizDevice = new BizDevice();

		bizDevice.setProductId(productId);

		int deviceCount = bizDeviceService.selectBizDeviceList(bizDevice).size();

		vo.setCount(deviceCount);

		return vo;
	}
}
